import Vue from 'vue'
import Vuex from 'vuex'
import { setToken, getToken, removeToken } from '@/utils/storage'
import { userInfoAPI } from '@/api/user'
Vue.use(Vuex)

export default new Vuex.Store({
  // 放数据的地方
  state: {
    // 存token和refresh_token
    tokenObj: getToken() || {},
    // 保存用户信息
    userInfo: {}
  },

  mutations: {
    setToken (state, obj) {
      // 把传递过来的token存到vuex
      state.tokenObj = obj
      // 存到本地存储
      setToken(obj)
    },

    logout (state) {
      state.tokenObj = {}
      // 删本地存储
      removeToken()
      // 删除userInfo
      state.userInfo = {}
    },

    // 修改userInfo的数据
    setUserInfo (state, obj) {
      state.userInfo = obj
    }
  },

  actions: {
    async reqUserInfo (ctx) {
      if (!ctx.state.userInfo.name) {
        // 发请求获取用户信息
        const res = await userInfoAPI()
        // 存到vuex里
        ctx.commit('setUserInfo', res.data)
      }
    }
  }
})
